
from core.llm.ambiguity_review import AmbiguityReviewer
from core.llm.compliance_review import ComplianceReviewer
from core.llm.clause_review import ClauseReviewer
from core.utils import load_text
import json

def ambiguity_review_test():
    """ 歧义性审查测试 """
    reviewer = AmbiguityReviewer()
    contract_content = load_text('购销合作协议1.txt')
    res = reviewer.invoke(contract_content)
    print(json.dumps(res, ensure_ascii=False, indent=4))

def compliance_review_test():
    """ 合规性审查测试 """
    reviewer = ComplianceReviewer()
    contract_content = load_text('购销合作协议1.txt')
    res = reviewer.invoke(contract_content)
    print(json.dumps(res, ensure_ascii=False, indent=4))

def clause_review_test():
    """ 合同条款审查测试"""
    reviewer = ClauseReviewer()
    clause_type = '转让标的'
    clause_content = """
二、转让标的及交易内容
㈠转让标的：一批报废自卸半挂车、牵引车、叉车等设备共20项资产，资产清单如下：
序号	资产名称	规格型号
1	自卸半挂车（桂P-9007挂）	27000kgNHG9400ZZX
2	自卸半挂车（桂P-9016挂）	27000kgNHG9400ZZX
3	牵引车VOVOL FM440 64T B（桂P00787）	瑞典VOLVOFM440
4	牵引车VOVLO（桂P00991）	瑞典VOLVOFM400
5	牵引车VOVLO（桂P01019）	瑞典VOLVOFM400
6	牵引车VOVLO（桂P01006）	瑞典VOLVOFM400
7	牵引车VOVLO（桂P00992）	瑞典VOLVOFM400
8	牵引车VOVLO（桂P00983）	瑞典VOLVOFM400
9	牵引车VOVLO（桂P01018）	瑞典VOLVOFM400
10	牵引车VOVLO（桂P00929）	瑞典VOLVOFM400
11	牵引车VOVLO（桂P00917）	瑞典VOLVOFM400
12	牵引车VOVLO（桂P00902）	瑞典VOLVOFM400
13	装载机WA470-3(DZ20156)（047#）	WA470-3(DZ20156)
14	挖掘机履带式液压PC200-7（15#）	PC200-7
15	挖掘机履带式液压PC200-7（16#）	PC200-7
16	叉车CPCD60（09#）	CPCD60/CY6102BG
17	叉车CPCD60（11#）	CPCD60/CY6102BG
18	叉车CPCD60（13#）	CPCD60/CY6102BG
19	滑移装载机420HD（004#）	420HD美国凯斯432T/M3
20	电子汽车衡SCS-150DT	SCS-150DT

㈡转让标的由甲方委托北部湾产权交易所（以下简称交易所）公开转让，采用网络竞价交易方式，最终由乙方成功受让。
㈢成交价格（含税）：人民币捌拾壹万贰仟柒佰玖拾捌元壹角肆分（￥812,798.14元），其中不含税价款￥719290.39元，增值税税率 13 %，税款￥93507.75元。
    """
    clause_type = '成交价款的支付方式及期限'
    clause_content = """
乙方应在本合同生效之日起5个工作日内将成交价款足额缴入交易所指定账户。资产交割完毕后，由交易所转给甲方。
甲方在收到成交价款之日起5日内向乙方开具13%增值税专用发票。如因适用国家税收政策原因需调整增值税税率的，不含税价款不变，增值税税额相应调整。
"""
    clause_type = '资产交割及清运保证金退付'
    clause_content = """
㈠标的按现状进行交割和交付，不因实际交割数量差异而调整成交价格。成交价格为甲方承储库仓内交货价，不含包装、运输及其他费用。
㈡乙方将成交价款、清运保证金足额支付至交易所指定银行账户后5个工作日内，甲、乙双方办理资产交割并签署交割单。乙方已交纳至北部湾产权交易所的交易保证金扣除应交竞价服务费后剩余款项自动转为清运保证金（金额不足的5万元，乙方应在交易合同生效之日起五个工作日内将不足部分支付至交易所指定银行账户）。
㈢甲、乙双方签署交割单前应当对需要清运的标的进行清点确认，避免清运过程中因清运标的有误产生纠纷，清点确认后才能签订交割单，签订交割单后20个工作日内，乙方须完成标的清运、销户工作。逾期未完成的，甲方将以书面形式催告，期间的场地占用费（￥2000元/日）由乙方承担，从清运保证金中扣除收取。扣取的清运保证金由北部湾产权交易所直接支付给甲方；场地占用费超出清运保证金的，超出部分由乙方在清运完成后5日内支付给甲方。乙方应当按照《交易合同》约定完成清运清场工作，其他履约事项以本交易公告、《交易合同》及签署的其他交易文件约定为准。如乙方无逾期完成清运清场工作、无其他违约行为的，则由交易所将清运保证金无息原渠道退还至乙方账户。
㈣清运期间责任承担：乙方清运期间以办理标的交付为目的而需对标的实施核验、计量、拆卸、装载、运输的，由乙方自行办理、费用自担，甲方予以适当协助。清运期间发生的标的遭损坏、灭失、价值缩减以及因拆除、清运等行为导致他人之人身、财产权益受损等风险和责任，皆由乙方承担。乙方自行判断清运条件，如因场地、道路等非甲方原因导致标的不能正常清运的风险由乙方承担。
㈤因本项目标的涉及报废车辆，乙方对标的进行拆解、再生利用的，应聘请具备报废机动车回收拆解/特种设备作业资质的单位进行操作（乙方自身具备相关资质的无需另聘），并符合当地及国家的环保及安全标准，因标的拆卸、运输作业违反法律规定造成环境污染及公共安全的，由乙方自行承担法律责任。标的拆解、清运由乙方到登记部门办理相关手续，甲方予以必要的配合，所涉及费用由乙方自行承担，拆解证明/回收证明等文件由乙方移交甲方办理销户手续。
    """

    clause_type = '合同争议的解决方式'
    clause_content = """
甲、乙双方在合同履行过程中发生争议，应本着友好合作的原则协商解决，或请交易所沟通、调解。协商、调解不能解决时，可以向甲方住所地人民法院起诉。
    """

    clause_type = '违约责任'
    clause_content = """
㈠合同双方应按照本合同约定履行合同义务。若乙方未按时支付成交价款或甲方不按时交付标的的，每逾期一日，违约方按合同应付价款的0.05‰向守约方支付违约金。
㈡乙方未在本合同约定的时间内向交易所支付本合同约定的交易价款超过5日的，甲方有权解除本合同。甲方解除合同的，由甲方委托北部湾产权交易所重新公开转让，重新公开转让的服务费由乙方另行支付。乙方原交纳的交易保证金在扣除甲、乙双方应支付给交易所的竞价交易服务费后的剩余金额（包含清运保证金）作为乙方违约金由北部湾产权交易所直接支付给甲方（如乙方已另付竞价交易服务费至交易所账户，则交易保证金在扣除甲方竞价交易服务费后的剩余金额作为作为乙方违约金由北部湾产权交易所直接支付给甲方）。
㈢一方违约给另一方造成经济损失，且违约方支付违约金的数额不足以赔偿对方的经济损失时，守约方有权就差额部分向违约方追偿。
㈣乙方未按国家或地区操作规范拆卸标的（甲方发出书面警告后仍不整改的）或非特殊原因，乙方逾期清运达5个工作日的，甲方有权解除交易合同，并要求乙方停止拆卸、清运相关作业，交还标的，且清运保证金不予返还。发生以上情形，乙方给甲方造成损失的，甲方保留向乙方追偿的权利。
㈤违约方需承担守约方为实现合法权益所支出的各项费用（包括但不限于律师费、诉讼费、保全费、执行费等费用）。
    """

    clause_type = '合同的变更和解除'
    clause_content = """
发生下列情形之一时可以变更、解除合同：
㈠因不可抗力致使本合同无法履行的；
㈡一方因自身原因没有履行合同，另一方予以认可的；
㈢双方协商一致，并订立了变更或解除协议。甲、乙双方经协商一致要求解除合同的，甲、乙双方应各自向交易所支付交易服务费，乙方原交纳的交易保证金由交易所收到全额交易服务费及双方签署的解约协议后退还给乙方，双方对此次交易中发生的其他费用各自承担。
本合同的变更、解除须订立书面协议，并报交易所备案。
    """

    res = reviewer.invoke(clause_type, clause_content)
    print(json.dumps(res, ensure_ascii=False, indent=4))



if __name__ == "__main__":
    # ambiguity_review_test()
    # compliance_review_test()
    clause_review_test()
